1656. Сортировка

 

Дана последовательность целых 32 битных знаковых чисел. Вам поручается отсортировать эту последовательность и удалить из нее все повторения элементов, т. е. необходимо удалить все кроме одной копии чисел в последовательности.

 

Вход. В первой строке находится количество чисел в последовательности n (1 ≤ n ≤ 65536). Следующие n строк содержат n целых чисел (по одному числу в строке).

 

Выход. Вывести не более n чисел, отсортированных в порядке убывания при четном n, и в порядке возрастания при нечетном n. Каждое число должно встречаться не более одного раза.

 

Пример входа

Пример выхода

6
8
8
7
3
7
7

8

7

3

 

 

РЕШЕНИЕ

сортировка

 

Анализ алгоритма

Отсортируем числа в массиве в зависимости от четности n. Повторяющиеся числа удалим при помощи функции unique.

 

Реализация алгоритма

Объявим массив для хранения чисел.

 

vector<int> v;

 

Читаем входные данные.

 

scanf("%d", &n);

for (i = 0; i < n; i++)

{

  scanf("%d", &a);

  v.push_back(a);

}

 

В зависимости от четности n сортируем числа.

 

if (n % 2 == 1)

  sort(v.begin(), v.end());

else

  sort(v.begin(), v.end(), greater<int>());

 

Удаляем повторяющиеся числа.

 

v.erase(unique(v.begin(), v.end()), v.end());

 

Выводим результирующий массив.

 

for (i = 0; i < v.size(); i++)

  printf("%d\n", v[i]);